/*
 * This file is part of the OSMembrane project.
 * More informations under www.osmembrane.de
 * 
 * The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0.
 * for more details about the license see http://www.osmembrane.de/license/
 * 
 * Source: $HeadURL: http://osmembrane-gui.googlecode.com/svn/sources/src/de/osmembrane/view/interfaces/IMainFrame.java $ ($Revision: 821 $)
 * Last changed: $Date: 2011-02-15 14:54:41 +0000 (Tue, 15 Feb 2011) $
 */



package de.osmembrane.view.interfaces;

import java.awt.Point;

import de.osmembrane.view.frames.MainFrame;
import de.osmembrane.view.frames.MainFrameGlassPane;

/**
 * Interface for {@link MainFrame}
 * 
 * @author tobias_kuhn
 * 
 */
public interface IMainFrame extends IView {

	/**
	 * @return the currently selected object on the pipeline of the main frame.
	 */
	public Object getSelected();

	/**
	 * Sets the explanation hint in the inspector panel to hint
	 * 
	 * @param hint
	 *            the hint to display
	 */
	public void setHint(String hint);

	/**
	 * @return the glass pane in front of the {@link MainFrame}'s contents that
	 *         can display data there (mainly Library-to-Pipeline drag & drop)
	 */
	public MainFrameGlassPane getMainGlassPane();

	/**
	 * Finds out whether drag & drop can be finished at at.
	 * 
	 * @param at
	 *            {@link Point} on the getMainGlassPane() to check for
	 * @return whether or not the point is valid drag and drop target
	 */
	public boolean isDragAndDropTarget(Point at);

	/**
	 * Returns the {@link IZoomDevice} capable of performing zooms
	 * 
	 * @return the corresponding IZoomDevice or null, if none present
	 */
	public IZoomDevice getZoomDevice();

	/**
	 * Maximizes the window.
	 */
	public void maximizeWindow();
}
